<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <script src="../js/jquery-1.10.1.min.js"></script>
  <style>
    * {
      padding: 0;
      margin: 0;
    }

    h3 {
      line-height: 60px;
    }

    li {
      list-style: none;
      line-height: 40px;
      border: 1px dashed #333;
    }

    .list {
      overflow: hidden;
    }

    .active {
      background-color: #6ff;
    }
  </style>
</head>

<body>
  <div>
    <button>新增1</button>
    <button>新增2</button>
    <button>新增3</button>

    <button>插入同级1</button>
    <button>插入同级2</button>

    <button>替换1</button>
    <button>替换2</button>

    <button>empty</button>
    <button>remove</button>
    <button>detach</button>
    <button>恢复</button>

    <button>clone(false)</button>
    <button>clone(true)</button>
  </div>
  <div class="wrap">
    <h3 id="title">批量操作元素</h3>
    <ul class="list">
      <li class="first">01</li>
      <li>02</li>
      <li class="mid">03</li>
      <li>04</li>
      <li>05</li>
      <li class="last"><span class="demo">06</span></li>
    </ul>
  </div>
</body>
<script>
  $("button").eq(0).click(function () {
    // console.log(this);

    var li = document.createElement("li");
    $(li).html("我是新增的冲波").addClass("newLli").appendTo(".list");

  })

  $("button").eq(1).click(function () {
    // $("<li>我是新增的冲波</li>").addClass("bo").click(function () {
    //   console.log($(this).index());
    // }).css({ background: "red" }).prependTo(".xlist");

    // $("<li></li>").html("我是新增的冲波").addClass("bo").click(function () {
    //   console.log($(this).index());
    // }).appendTo(".list")

    $("<li>").html("我是新增的冲波").addClass("bo").click(function () {
      console.log($(this).index());
    }).appendTo(".list")

  })

  $("button").eq(2).click(function () {
    $("<li>", {
      text: "我是新增的冲波",
      class: "bobo",
      click: function () {
        console.log($(this).index());
      },
      css: {
        background: "red",
        width: 200,
        height: 100,
      }
    }).appendTo(".list");
  })

  // $(newEle).insertBefore(oldEle)   将一个元素(新的|已存在的)插入到另一个(已存在元素)的前面

  $("button").eq(3).click(function () {
    $("<li>", {
      text: "我是新增的冲波",
      class: "bobo",
      click: function () {
        console.log($(this).index());
      },
      css: {
        background: "red",
        width: 200,
        height: 100,
      }
    }).insertBefore(".list");
  })

  // $(newEle).insertAfter(oldEle)    将一个元素(新的|已存在的)插入到另一个(已存在元素)的后面

  $("button").eq(4).click(function () {
    $("<li>", {
      text: "我是新增的冲波",
      class: "bobo",
      click: function () {
        console.log($(this).index());
      },
      css: {
        background: "red",
        width: 200,
        height: 100,
      }
    }).insertAfter(".list");
  })

  // $(newEle).replaceAll(oldEle)    用一个元素(新的|已存在的)替换另一个(已存在元素)

  $("button").eq(5).click(function () {
    $("<li>", {
      text: "我是新增的冲波",
      class: "bobo",
      click: function () {
        console.log($(this).index());
      },
      css: {
        background: "red",
        width: 200,
        height: 100,
      }
    }).replaceAll(".mid");
  })

  // $(oldEle).replaceWith(newEle)   把一个元素(已存在的)替换为另一个(新的|已存在元素)

  $("button").eq(6).click(function () {
    var $li = $("<li>", {
      text: "我是新增的冲波",
      class: "bobo",
      click: function () {
        console.log($(this).index());
      },
      css: {
        background: "red",
        width: 200,
        height: 100,
      }
    })
    $(".mid").replaceWith($li);
  })

  $(".mid").data("num", 100);
  $(".mid").data("str", "chongbo");
  $(".mid").data("bool", true);

  $(".mid").click(function () {
    console.log($(this).index, $(this).data('num'));
  })

  var $ele = null;

  // $(ele).empty()   情况匹配的元素

  $("button").eq(7).click(function () {
    $(".list").empty();
  })

  // remove()  删除匹配的元素   这个方法不会把匹配的元素从jQuery对象中删除，因而可以在将来再使用这些匹配的元素。但除了这个元素本身得以保留之外，其他的比如绑定的事件，附加的数据等都会被移除。

  $("button").eq(8).click(function () {
    $ele = $(".mid").remove();
  })

  // detach()  删除匹配的元素   这个方法不会把匹配的元素从jQuery对象中删除，因而可以在将来再使用这些匹配的元素。与remove()不同的是，所有绑定的事件、附加的数据等都会保留下来。

  $("button").eq(9).click(function () {
    $ele = $(".mid").detach();
  })

  $("button").eq(10).click(function () {
    if ($ele) {
      $ele.insertAfter($(".first").next())
    }
  })

  $(".list li").each(function (index) {
    $(this).data("msg", index)
  })
  $(".list li").click(function (index) {
    console.log($(this).data("msg"));
  })

  // .clone(false)  默认 只克隆元素及其子内容   至于绑定的数据和事件 =>不克隆 

  $("button").eq(11).click(function () {
    $(".list").clone().appendTo(".wrap");
  })

  // .clone(true)   既克隆元素及其子内容        又克隆绑定的数据和事件 
  $("button").eq(12).click(function () {
    $(".list").clone(true).appendTo(".wrap");
  })

</script>

</html>